BigDFT.Interop.XTBInterop module
This module contains some wrappers for using XTB to perform calculations.
https://xtb-docs.readthedocs.io/en/latest/contents.html
- class XTBCalculator(omp='1', dry_run=False, skip=False, verbose=True)[source]
A calculator which can drive simulations using the XTB program.
XTB uses a mixed approach for control. First, you can pass command line arguments to the program. Second, you can modify the input file. We mirror this split here. Command line arguments can be passed as arguments to the run command. To modify the input file, the run command accepts an argument inp which is a dictionary. This dictionary is written to the input file (in the appropriate format). See the example for more details.
https://xtb-docs.readthedocs.io/en/latest/contents.html
- os = <module 'os' from '/usr/local/anaconda/lib/python3.7/os.py'>
- pre_processing()[source]
Process local run dictionary to create the input directory and identify the command to be passed
- Returns:
dictionary containing the command to be passed to
process_run()
- Return type:
- class XTBLogfile(sys, logname, opt=False, md=False)[source]
This class stores the results of an XTB calculation which might be later post-processed.
- sys
a handle to the original system used in the calculation.
- Type:
- property energy
The total energy of the system.
- property gradient_norm
The total gradient of the system.
- property homo_lumo_gap
The homo lumo gap of the system.
- property gfnff_qest
When using the GFNFF option, no charges are computed. Instead, there are estimated charges when the topology is generated. This will extract those values.
- xtb_equilibrate(sys, calc, prod_time=20, **kwargs)[source]
This function will automate the process of taking a system from zero temperature up to room temperature (298.15 kelvin).
This routine will work by performing 10ps simulations at temperatures from 0 to 298.15 kelvin, with each simulation spaced by 10 degrees (310 ps total). Finally, the production run can be performed.
- Parameters:
sys (BigDFT.Systems.System) – the system to calculate.
calc (BigDFT.Interop.XTBInterop.XTBCalculator) – a calculator to use.
prod_time (int) – the number of production picoseconds to run at room temperature.
**kwargs – any argument you would normally want to pass to the run command.
- Returns:
a list of positions along the trajectory and a list of energy values.
- Return type:
- _example()[source]
The following is an example of module usage:
"""Example of using XTB interoperability""" from BigDFT.IO import XYZReader from BigDFT.Systems import System from BigDFT.Fragments import Fragment from os.path import join from copy import deepcopy # Create a system. reader = XYZReader("Ar") fsys = System() fsys["FRA:1"] = Fragment(xyzfile=reader) fsys["FRA:2"] = deepcopy(fsys["FRA:1"]) fsys["FRA:2"].translate([-2, 0, 0]) # Create a calculator. code = XTBCalculator() log = code.run(sys=fsys, name="test", run_dir="work") # Print some values. print(log.energy) print(log.gradient_norm) print(log.homo_lumo_gap) print(log.charges) # Geometry optimization. log = code.run(sys=fsys, name="opt", opt=True, run_dir="work") sys2 = log.optimized_geometry # this also works sys2 = log.opt_traj[-1] print(log.opt_energy) print(log.opt_fnorm) # Recompute. log = code.run(sys=sys2, name="opt2", run_dir="work") print(log.energy) print(log.gradient_norm) print(log.homo_lumo_gap) # Molecular dynamics. inp = {} inp["md"] = {"temp": 300, "time": 2} logmd = code.run(sys=fsys, name="md", omd=True, inp=inp, run_dir="work") print(logmd.md_energy) print(logmd.md_fnorm) sys3 = logmd.md_traj[-1]